

#ifndef __LOG_H__
#define __LOG_H__
// logging 
#include <pantheios/pantheios.hpp>
#include <pantheios/frontends/fe.N.h>
#include <pantheios/backends/be.N.h>
#include <pantheios/backends/bec.file.h>
#include <pantheios/backends/bec.WindowsConsole.h>
#include <pantheios/backends/bec.null.h>

#include <pantheios/implicit_link/core.h>
#include <pantheios/implicit_link/fe.N.h>
#include <pantheios/implicit_link/be.N.h>
#include <pantheios/implicit_link/be.null.h>

#include <pantheios/implicit_link/bec.file.h>
#include <pantheios/implicit_link/be.WindowsConsole.h>

#define PANTHEIOS_TRACE_PREFIX __FILE__ "->" __FUNCTION__ "("PANTHEIOS_STRINGIZE(__LINE__) "): "
#include <pantheios/trace.h>


#define LOG_T_DEBUG	  PANTHEIOS_TRACE_DEBUG
#define LOG_T_INFO    PANTHEIOS_TRACE_INFORMATIONAL
#define LOG_T_NOTICE	PANTHEIOS_TRACE_NOTICE
#define LOG_T_WARN	  PANTHEIOS_TRACE_WARNING
#define LOG_T_ERR	    PANTHEIOS_TRACE_ERROR
#define LOG_T_CRTI	  PANTHEIOS_TRACE_CRITICAL
#define LOG_T_ALERT	  PANTHEIOS_TRACE_ALERT
#define LOG_T_EMER	  PANTHEIOS_TRACE_EMERGENCY
#define LOG_T_PRINTF(fmt, ...)  PANTHEIOS_TRACE_PRINTF(pantheios::informational, fmt, __VA_ARGS__)

#define LOG_DEBUG	  pantheios::log_DEBUG
#define LOG_INFO    pantheios::log_INFORMATIONAL
#define LOG_NOTICE	pantheios::log_NOTICE
#define LOG_WARN	  pantheios::log_WARNING
#define LOG_ERR	    pantheios::log_ERROR
#define LOG_CRTI	  pantheios::log_CRITICAL
#define LOG_ALERT	  pantheios::log_ALERT
#define LOG_EMER	  pantheios::log_EMERGENCY
#define LOG_PRINTF(...)  pantheios::logprintf(pantheios::informational, __VA_ARGS__)
#endif


